package com.sojson.util.properties;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

import org.springframework.core.io.Resource;

/**
 * Properties工具类接口
 * 
 * @author liu
 * @Date 2020-06-15 14:44:01
 * @Description
 *
 */
public interface PropertiesUtilInterface {

    /**
     * 读取resources下所有相同名字的properties文件，返回一个Properites对象
     * 
     * @param fileName properties文件名（文件必须要在resources文件夹下）
     * @return 得到的对象
     * @throws IOException
     */
    Properties getProperties(String fileName) throws IOException;

    /**
     * 读取resources下所有相同名字的properties文件，返回一个Properites对象
     * 
     * @param fileName  properties文件名（文件必须要在resources文件夹下）
     * @param encoding  字符编码
     * @return 得到的对象
     * @throws IOException
     */
    Properties getProperties(String fileName, String encoding) throws IOException;

    /**
     * 根据properties文件输入流获取Properties对象
     * 
     * @param file 文件
     * @return 得到的Properties对象
     * @throws IOException
     */
    Properties getProperties(File file) throws IOException;

    /**
     * 根据properties文件输入流获取Properties对象
     * 
     * @param file 文件
     * @param encoding  字符编码
     * @return 得到的Properties对象
     * @throws IOException
     */
    Properties getProperties(File file, String encoding) throws IOException;

    /**
     * 根据properties文件路径获取Properties对象
     * 
     * @param resource
     * @return 得到的Properties对象
     * @throws IOException
     */
    Properties getProperties(Resource resource) throws IOException;

    /**
     * 根据properties文件路径获取Properties对象
     * 
     * @param resource
     * @param encoding  字符编码
     * @return 得到的Properties对象
     * @throws IOException
     */
    Properties getProperties(Resource resource, String encoding) throws IOException;

    /**
     * 根据properties文件输入流获取Properties对象
     * 
     * @param inputStream properties文件输入流
     * @return 得到的Properties对象
     * @throws IOException
     */
    Properties getProperties(InputStream inputStream) throws IOException;

    /**
     * 获取properites文件中的某个值
     * 
     * @param fileName properties文件名（文件必须要在resources文件夹下）
     * @param key 要获取的值的key
     * @return 得到的值
     * @throws IOException
     */
    String getValue(String fileName, String key) throws IOException;

}